import path from 'path'
import fs from 'fs'

function walkDirSync(dirPath, opts) {
  const options = Object.assign(
    {
      noLinks: false,
    },
    opts,
  )
  let filePaths = []
  const list = fs.readdirSync(dirPath)
  list.forEach((filePathParam) => {
    let filePath = filePathParam
    filePath = path.join(dirPath, filePath)
    const stat = options.noLinks
      ? fs.lstatSync(filePath)
      : fs.statSync(filePath)
    // skipping symbolic links when noLinks option
    if (options.noLinks && stat && stat.isSymbolicLink()) {
      return
    } else if (stat && stat.isDirectory()) {
      filePaths = filePaths.concat(walkDirSync(filePath, opts))
    } else {
      filePaths.push(filePath)
    }
  })

  return filePaths
}

export default walkDirSync
